package com.lechi.web.vo;

import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import java.util.List;


/**
 * 设备对象 iot_device
 *
 * @author yangguang
 * @date 2024 -03-20
 */
@Data
public class IotDeviceVo {

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 设备组ID
     */
    @NotNull(message = "参数groupId不能为空")
    private Long groupId;


    /**
     * 产品分类ID
     */
    @NotNull(message = "参数industryId不能为空")
    private Long industryId;

    /**
     * 设备名称
     */
    private String deviceName;

    /**
     * 设备序列号
     */
    @NotBlank(message = "参数deviceSn不能为空")
    @Length(max = 50, message = "参数deviceSn长度不能大于{max}")
    private String deviceSn;

    /**
     * 协议类型
     */
    @NotBlank(message = "参数protocolType字段不能为空")
    private String protocolType;

    /**
     * 区站号
     */
    @NotBlank(message = "参数deviceStation字段不能为空")
    private String deviceStation;

    /**
     * 流量卡卡号
     */
    private String cardNum;

    /**
     * 视频流地址
     */
    private String deviceCode;

    /**
     * 安装地址
     */
    @NotBlank(message = "参数address字段不能为空")
    private String address;

    /**
     * 时间间隔
     */
    @NotNull(message = "参数timeInterval字段不能为空")
    private int timeInterval;

    /**
     * 所属仪器的ID号
     */

    private Long idleTime;

    /**
     * 纬度
     */

    private Double latitude;

    /**
     * 经度
     */
    private Double longitude;

    /**
     * 海拔高度
     */
    private Double altitude;

    /**
     * 二代设备仪器ID
     */
    private String instrumentId;

    /**
     * 是否上传图片
     */
    @NotNull(message = "参数isShowImg不能为空")
    private Long isShowImg;

    @NotNull(message = "参数isRecordLog不能为空")
    private Integer isRecordLog;

    /**
     * 生成数据文件周期
     */
    private Integer recordLogTime;

    private List<@Valid IotDeviceSensorRelVo> sensorList;


    /**
     * The type Iot device sensor rel vo.
     */
    @Data
    public static class IotDeviceSensorRelVo {

        /**
         * 主键ID
         */
        private Long id;

        /**
         * 所属设备ID
         */
        private Long deviceId;

        /**
         * 观测要素分组ID
         */
        private Long sensorId;

        /**
         * 观测要素ID
         */
        private Long sensorGroupId;

        /**
         * 是否隐藏
         */
        private Integer isHide;

        /**
         * 观测要素别名
         */
        private String sensorAliasName;

        /**
         * 数据定义
         */
        private String dataDefine;

        /**
         * 排序
         */
        private Long sort;

        /**
         * 超时时间
         */
        private Long outTime;

        /**
         * 备用字段
         */

        private String note;


        /**
         * 整型系数
         */
        private Double intFactor;
    }
}
